
The changes for each release are divided into sections,
in chronological order, with a list of known bugs at the
very end of this file.

------------------------------------------------------------------------

	Initial Release

Additions & Changes:

 NOTE: Not every change is documented here. You must read all
 the documentation to learn about everything.

Added many new accelerators (keyboard shortcuts).

Removed the annoying save-updated-state-file requester.

Added a level meter.

Added support for loading V2.06 state files (no guarantees though).

Added menu command to dump RAM to a file.

Added menu commands to make CPU subwindows more convenient.

Added menu command to close all subwindows.

Added menu commands to load directories as disk images.
Directories can also be dropped onto the main window.

Added limited .zip file support. You will need zlib1.dll (available
on my website) but the program will run without it; you will simply
receive an error message if you attempt to open a .zip file. Only
one image per .zip file will be loaded and it will not have write-back
support. Only 2HD disks are supported and the only allowed formats are
.DIM and raw sectors (.XDF, .HDM, etc.)

Added menu command to log CPU state. Limited to 20 MB.

Added menu command to toggle high-priority mode.
Also available by pressing Alt-P. This option is not saved.

 Caution: This can cause problems by shutting out lower priority tasks.
 Make sure your computer can handle the processing load first.

Certain accelerators are now multiplexed based on execution state.
For example, Alt-F12 now toggles execution state (Break/Execute).

Disassembly window now has a context menu command to save the
disassembly to a file.

Disassembly window can be scrolled with the mouse wheel.
Hold Ctrl or Shift to scroll by pages instead of lines.

Memory window can also be scrolled with the mouse wheel. (see above)
Hold Ctrl to scroll by pages, Shift (or Ctrl+Shift) for top/bottom.

Disassembly and memory windows also have some new scrolling-related
keyboard shortcuts available when in pop-up mode.

Disassembly window will put approximately 4kB worth of disassembled
instructions on the clipboard if you press Ctrl-C (or even just 'C')
while the window is active (requires pop-up windows to be enabled).
The disassembly will start with the currently viewed lines.

Breakpoints in the disassembly window can no longer be manipulated
while the emulator is running and PC synchronization is on.

In pop-up mode, the disassembly window now discards the first mouse
button click it receives when inactive. Consequently, you can activate
it without worrying about interfering with breakpoints. This feature
can also be a mild annoyance sometimes.

Changed the behavior of the preloaded address for "Go to Address"
(formerly called Enter Address) in disassembly windows: now it always
uses the address on the current line.

Scrolling the disassembly window backwards by pages now utilizes
a much better (albeit more intensive) algorithm.

Disassembly window now has a run-to-cursor menu command, which can
also be activated directly with the mouse. There is also a keyboard
shortcut which will run to whatever address is at the top of the
disassembly window, provided that the current PC is not on the
same line (which it usually is).

Several new mouse functions were added to the disassembly window.
See the appropriate reference file for a complete list.

Memory window display units can now be adjusted through the keyboard
in addition to the usual context menu.

Memory window now highlights selected addresses.

Memory window will jump to an address in memory if you double-click
on it while holding the Control key. This works with any data size,
but will always read 32-bits starting from the first byte of the
item you clicked on.

Memory window pop-up menu condensed with a new "page" submenu.
("Page" is in quotes 'cause the address divisions are arbitrary,
not based on any X68000 memory management scheme I'm aware of.)

Memory window now has finer resolution (16-byte).

Memory windows now have search dialogs.

A few hacked-in key translations to make DOS easier to use.
While this should work for everyday use, certain usage patterns
can cause the wrong key to be sent. This may not be easy to fix.
Also be aware that these special translations will not occur when
XM6 is in Japanese mode.

 NOTE: While XM6 allows you to remap keys, the shifted and non-shifted
 versions of each character associated with a Japanese key don't always
 map to the same key on other keyboards. For example, Shift-2 is '@'
 on an American keyboard and a quote mark on a Japanese Keyboard.
 You could remap the '2' key to the apostrophe/quote key, but then
 you'd have to press the apostrophe key to type the number two.

 So that's why the above hack was implemented, bypassing the remapper
 for certain useful symbols.

Floppy disk creation will now add the appropriate extension for the
selected filter if no extension is specified.

Pressing the grave/tilde key will now toggle speed limiting.
Holding it down will toggle it temporarily. You get both behaviors
in the same key by measuring how long the key was held down.

Program now includes an internal copy of the basic IPL ROM.
It will still try to load IPL ROMs externally first, however.
As far as I can tell, the Japanese license permits this usage.

Removed CGROM check since it is not a critical component.
Removed IPLROM check for those who want to modify the IPL.
(XM6 V2.06 allows you to configure these checks, but this
release is based on V2.05.)

Attempts to force SRAM settings for Western glyphs (e.g. backslash
instead of Yen sign) when not running in Japanese mode.

Implemented better 32-bit PC support.

Cleaned up the options dialog a bit.

Invalid MRU (history) elements will be removed on access.

Added a command to erase all history lists.

When loading a state file, XM6 will no longer overwrite certain
interface-related configuration options with values from the file.

Clicking on the text displayed on either side of the FM/ADPCM volume
sliders will set them to their default value. If they are already at
their default value, they will be set to the maximum value.

If the next instruction to be executed is a conditional branch that
should succeed according to the current CCR, it will be marked as such
in the disassembly window. Also applies to DBcc but never BRA, BSR,
or other unconditional instructions. Scc instructions will likewise
show the value to be assigned.

Disassembler tweaked a bit:
- DBRA becomes the more correct DBF
- DBcc no longer has a superfluous extension
- MOVEQ no longer has a superfluous extension
- Bit manipulation instructions no longer have superfluous extensions
- BTST had a problem with a certain addressing mode, which is now fixed

 Remember the following facts and you won't need those crutches:

 MOVEQ always sign extends from 8 to 32 bits.

 DBcc _breaks_ the loop if the condition is true.
 It could be read as "(decrement and branch) unless (condition)".

 Bit manipulation instructions (BTST, BCHG, BCLR, BSET) are 32-bit
 if and only if the destination is a data register. They are 8-bit
 in every other case (even that unconventional one).




Bug Fixes:

Double bus faults should no longer lock up the program.

Fixed a distracting mouse cursor bug for pop-up windows.

Memory window caption no longer gets truncated.

Speed percentage no longer resets on window paint.

Disasm window now always snaps to PC when you halt execution.

I _think_ I fixed manually flipping the S bit in the system byte.

Fixed a bug where disabled breakpoints could disappear.

Fixed a bug in the unrecognized-instruction-suppressor routine when
moving backwards in the disassembly window. Fewer invalid instructions
will now appear.

Some of the English floppy disk file filters were wrong.

Fixed a bug where, after closing the last subwindow, the Window menu
didn't update correctly the next time it was opened.

Fixed (?) a problem where XM6 could crash in certain situations
if you sent it command line arguments too soon after quitting.
The old instance would try to implement the arguments even while
it was shutting down.

Memory window now positioned correctly when jumping to the last few
addresses in the current view range.

------------------------------------------------------------------------

	Release 2 (120321)

Directory-as-image loading is now more tolerant of bad file names
and has slightly better error handling.

Fixed a harmless but annoying bug in the RAM dumper: Some code was
temporarily inserted for experimental purposes but was never removed.

Added an important note at the end of the manual.

------------------------------------------------------------------------

	Release 3 (120425)

Improved single-line backwards scrolling for the disassembly window.

Fixed a bug that was causing forward single-line scrolling to miss
the correct address for the next line in some circumstances.

Improved error reporting when directory->image building fails.

Improved disassembly window's address stack. Current address will now
be pushed onto the stack for most explicit address changes.

Memory window input handling changed such that the Left/Right keys
no longer cycle through the display unit types but instead navigate
through a history buffer of views that correspond to addresses which
have been explicitly selected in the memory window.

------------------------------------------------------------------------

	Release 4 (130511)

Added commands to take screen shots. (Use Alt-Q or the menus.)

Added a command to clear RAM and reset the virtual machine.

Improved invalid file name rejection when building a directory image.

Full Screen mode no longer switches the display settings if the current
resolution is already 800 x 600. Avoids unnecessary wear on the monitor.

A new menu option called Full Screen Stretch has been added. It changes
the behavior of Full Screen mode to better serve those with large,
high-resolution displays, as well as those who don't like having their
screen mode changed, even temporarily. Refer to the Reference Manual
for all the gory details.

------------------------------------------------------------------------

	Release 5 (140316)

Run to Cursor (Ctrl-F10) will now work even if the cursor corresponds
to the current PC. This is useful for iterating loops and other periodic
sequences without setting an explicit breakpoint.

Branches with negative offsets are now marked in the disassembly window.
A (visible) branch target that will be taken this cycle is also marked.

The destination of a branch that will be taken during the next cycle
will be marked, as long as it is visible in the disassembly window.

Fixed a minor bug in the Full Screen Stretch redrawing routines.

Added an option called "Full Screen Rescale". When enabled, the standard
resolution multipliers will be ignored in Full Screen Stretch mode.
This improves the aspect ratio of a few games, mostly arcade ports.

VGM logging is now available under the tools menu. Based on code changes
submitted by Mihai Draghicioiu.

------------------------------------------------------------------------

	Release 6 (161123)

If no MIDI board is installed in the emulated X68000, the corresponding
resources will no longer be manipulated. Previously the MIDI subsystem
would open the configured MIDI devices (if any) regardless, which was
wasteful and caused interference with other programs in rare situations.

The workaround for older versions of the program is to select "(None)"
for both MIDI devices before disabling the MIDI board entirely.

------------------------------------------------------------------------

	Currently Known Bugs / Deficiencies

Manually setting an odd PC won't cause an address error. (But the
68000 will probably execute an illegal instruction or cause some other
error fairly soon anyway.) Odd PCs induced in other ways are usually
handled correctly, since the emulator checks for such things when
relevant instructions are executed.

There are plenty of original spelling/grammar errors extant.

F10/Shift-F10 menu accesses don't work for memory or disassembly
windows even when not masked by an accelerator. (No big deal.)

Shift-F10/APPS don't work for the PCG window but F10 does.

The disassembly window doesn't work well around "page breaks".
There isn't a simple fix due to the complex scroll bar integration.

Adding/removing MIDI devices or altering your MIDI Mapper configuration
can cause problems. You should always restart XM6 and verify its MIDI
configuration whenever you do so, especially if XM6 was running at the
time, as its MIDI subsystem design doesn't accommodate changes to your
Windows MIDI configuration after the program starts.
